package org.kinglone.utlis;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieUtils {

	/**
	 * Cookie信息是存在客户端(浏览器)的，此方法为向客户端添加Cookie信息
	 * @param userId      用户账号
	 * @param cookieName  cookie名字
	 * @param time		 cookie存活时间
	 * @param request   请求
	 * @param response  将cookie响应到客户端
	 */
	public static void addCookie(String userId, String cookieName, int time,
			HttpServletRequest request, HttpServletResponse response) {
		 //调用方法判断cookie信息是否存在
		Cookie cookie = getCookie(request,cookieName);
		
		/**
		 * 如果cookie不存在，就创建一个新的cookie
		 * 参数一：cookie的名字
		 * 参数二：cookie对应的值：用户信息
		 */
		if(cookie == null){
			cookie = new Cookie(cookieName,userId);
		}
		//如果cookie存在，需要将用户信息塞进cookie中
		cookie.setValue(userId);
		//设置存活时间
		cookie.setMaxAge(time);
		//设置cookie的作用范围域
		cookie.setPath("/");
		System.out.println("========响应cookie==========");
		//将cookie响应至客户端
		response.addCookie(cookie);
		
	}

	public static Cookie getCookie(HttpServletRequest request,
			String cookieName) {
		/**
		 * 获取所有的Cookie信息
		 */
		Cookie[] cookies = request.getCookies();
		 //判断cookies是否为空,不为空则遍历
		if(cookies!=null){
			for(Cookie cookie : cookies){
				//如果遍历到的cookie的名字和传过来的名字相同则返回
				if(cookie.getName().equals(cookieName)){
					return cookie;
				}
			}
		}
		//如果Cookie为空就返回空
		return null;
	}
	
	//清除cookie信息
	public static void removeCookie(String cookieName,HttpServletRequest request,HttpServletResponse response) {
		
		//根据cookie的名字获取cookie信息
		Cookie cookie = getCookie(request, cookieName);
		
		/**
		 * 判断如果cookie不为空，
		 * 将cookie的存活时间清零
		 * 设置cookie的作用域
		 * 将cookie响应至客户端
		 */
		if(cookie!=null){
			//将cookie的存活时间清零
			cookie.setMaxAge(0);
			//设置cookie的作用域
			cookie.setPath("/");
			//将cookie响应至客户端
			response.addCookie(cookie);
		}
	}

}
